package com.xhh.learning.record.algorithm.sort;

/**
 * 类名： BinarySearch
 * 描述：
 * 公司： 北京海鑫科金高科技股份有限公司
 * 作者： Administrator
 * 版本： V1.0
 * 创建时间:  2019/4/15 16:08
 * 最后修改时间:  2019/4/15 16:08
 */
public class BinarySearch {

    public static void main(String[] args) {
        int[] arr = {1, 3, 4, 5, 6, 8, 8, 8, 10, 11};

        int bsearch = bsearch(arr, arr.length - 1, 9);
        System.out.println(bsearch);
    }


    static int bsearch(int[] a, int n, int value) {
        int low=0,high=n;

        while (low <= high) {
            int mid = low + (high - low) / 2;
            if (a[mid] > value) {
                high = mid - 1;
            } else if (a[mid] < value) {
                low = mid + 1;
            } else {
                if (mid == 0 || a[mid - 1] != value) {
                    return mid;
                } else {
                    high = mid - 1;
                }
            }
        }

        return -1;
    }

}
